package divinity.pathfinding
{
	public class List
	{
		private var _list:Array;
		private var _filtered:Array;
		private var _box:int=2;
		public function List(startPos:Object,destPos:Object,wld:*)
		{
			_list=[];
			var sx=startPos.x;
			var sy=startPos.y;
			var dx=destPos.x;
			var dy=destPos.y;
			var world=wld;
			
			//trace("making list ",wld,sx,sy,dx,dy);
			
			_list[0]=new PathNode({x:sx+_box,y:sy},{x:dx,y:dy},world);
			_list[1]=new PathNode({x:sx+_box,y:sy+_box},{x:dx,y:dy},world);
			_list[2]=new PathNode({x:sx,y:sy+_box},{x:dx,y:dy},world);
			_list[3]=new PathNode({x:sx-_box,y:sy+_box},{x:dx,y:dy},world);
			_list[4]=new PathNode({x:sx-_box,y:sy},{x:dx,y:dy},world);
			_list[5]=new PathNode({x:sx-_box,y:sy-_box},{x:dx,y:dy},world);
			_list[6]=new PathNode({x:sx,y:sy-_box},{x:dx,y:dy},world);
			_list[7]=new PathNode({x:sx+_box,y:sy+_box},{x:dx,y:dy},world);
			
			_filtered=[];
			for(var n=0;n<_list.length;n++)
			{
				if(_list[n].movable)
				{
					_filtered.push(_list[n]);
				}
			}
			_filtered.sortOn(["movable","distance"],16);
			
		}
		public function get best()
		{
			return _filtered[0];
		}
	}
}